package com.lcc.pojo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author 廖聪聪
 * @version 1.0
 * 创建时间 2020/7/25 15:22
 */

public class ShoppingCart {

	private Map<Integer,ShoppingCartItem> books = new HashMap<Integer, ShoppingCartItem>();

	/**
	 * 修改指定的购物数量
	 *
	 */
	public void updateItemQuantity(Integer id , int quantity){
		ShoppingCartItem sci = books.get(id);
		if (sci!=null){
			sci.setQuantity(quantity);
		}
	}
	/**
	 * 返回购物车中商品的总数量
	 * @return
	 */
	public int getBookNumber(){
		int total = 0;

		for(ShoppingCartItem sci: books.values()){
			total += sci.getQuantity();
		}

		return total;
	}

	public void removeItem(Integer id){
		books.remove(id);
	}

	/**
	 * 清空购物车
	 */
	public void clear(){
		books.clear();
	}

	/**
	 * 返回购物车是否为空
	 * @return
	 */
	public boolean isEmpty(){
		return books.isEmpty();
	}

	/**
	 * 返回购物车中商品的数量
	 * @return
	 */
	public double getTotalMoney(){
		float total = 0;
		for (ShoppingCartItem sci :books.values()){
			total += sci.getItemMoney();
		}
		return total;
	}

	public Collection<ShoppingCartItem> getItems(){
		return books.values();
	}

	/**
	 * 检验购物车中是否有id指定的商品
	 * @param id
	 * @return
	 */
	public boolean hasBook(Integer id){
		return books.containsKey(id);
	}

	/**
	 * 向购物车中添加一件商品
	 * @param book
	 */
	public void addBook(Book book){
		//1. 检查购物车中有没有该商品, 若有, 则使其数量 +1, 若没有,
		//新创建其对应的 ShoppingCartItem, 并把其加入到 books 中
		ShoppingCartItem sci = books.get(book.getBookid());
		if (sci==null){
			sci = new ShoppingCartItem(book);
			books.put(book.getBookid(),sci);
		}else {
			sci.increment();
		}
	}
}
